package com.example.tasks;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.concurrent.TimeUnit;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * 定时任务测试
 * @ClassName: MyTask
 * @Description: TODO(这里用一句话描述这个类的作用)
 * @author liuwj3
 * @date 2018年12月24日 下午10:49:10
 *
 */
@Component
public class MyTask {
	private static final String HMS = "yyyy:MM:dd HH:mm:ss";

	private static final ThreadLocal<DateFormat> df = new ThreadLocal<DateFormat>() {
		@Override
		protected DateFormat initialValue() {
			return new SimpleDateFormat(HMS);
		}
	};

	/**
	 * 每过3秒执行一次任务
	 */
	// @Scheduled(fixedRate = 3000)
	/**
	 * CRON表达式，只能有6位，参考网址：http://cron.qqe2.com/
	 */
	// 每分钟的第5秒到30秒执行
	// @Scheduled(cron = "5-30 * * * * ? ")
	// 从第二个小时开始，每小时执行一次
	@Scheduled(cron = "0 0 2/1 * * ?")
	public void reportCurrentTime() {
		// 这种方式，时区要+8
		Instant now = Instant.now().plusMillis(TimeUnit.HOURS.toMillis(8));
		System.out.println(now);
		System.out.println(new Date());
		// 获取当前时区的时间
		System.out.println(Instant.now().atZone(ZoneId.systemDefault()));
		
		System.out.println("现在时间：" + df.get().format(new Date()));
		LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
	}

}
